package subraSoft.centaurus.gui.util;

import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;

import javax.swing.ImageIcon;

import org.apache.log4j.Logger;

/**
 * Utilidad para obtener imagenes.
 * 
 * @author caeycae
 * 
 */
public final class CenImageUtil {

	private static CenImageUtil instance;
	private static Logger logger = Logger.getLogger(CenImageUtil.class);
	private Toolkit toolkit;
	
	private CenImageUtil()
	{
		toolkit = Toolkit.getDefaultToolkit();
	}
	
	public static CenImageUtil getInstance()
	{
		if(instance == null)
			instance = new CenImageUtil();
		return instance;
	}

	private URL getURL(String path)
	{
		URL url = ClassLoader.getSystemResource(path);
		logger.debug("URL obtenida: " + url);
		return url;
	}
	
	
	public ImageIcon getIcon(String path)
	{
		logger.debug("Obteniendo icono: " + path);
		ImageIcon icon = new ImageIcon( getImage(path) );
		
		if(icon == null)
			throw new RuntimeException("No se encuentra la imagen " + path);
		return icon;
	}
	
	public ImageIcon getIconScaled(String path, int pixeles)
	{
		logger.debug("Obteniendo icono: " + path);
		ImageIcon icon = new ImageIcon( getImageScaled(path, pixeles, pixeles));
		
		if(icon == null)
			throw new RuntimeException("No se encuentra la imagen " + path);
		return icon;
	}
	
	public Image getImageScaled(String path, int pixelesH, int pixelesW)
	{
		logger.debug("Obteniendo imagen: " + path);
		Image i = toolkit.getImage( getURL(path) );
		if(i == null)
			throw new RuntimeException("No se encuentra la imagen " + path);
		return i.getScaledInstance(pixelesH, pixelesW, Image.SCALE_DEFAULT);
	}

	public Image getImage(String path)
	{
		logger.debug("Obteniendo imagen: " + path);
		Image i = toolkit.getImage( getURL(path) );
		if(i == null)
			throw new RuntimeException("No se encuentra la imagen " + path);
		return i;
	}
}
